<ExtensionModel>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/VersionControlSystems" name = "Version control systems">
		<Description>Version control systems</Description>
		<ExtensionNode name="Class">
			<Description>The specified class must subclass VersionControlSystem.</Description>
		</ExtensionNode>
	</ExtensionPoint>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/CommitDialogExtensions" name = "Commit dialog extensions">
		<Description>Commit dialog extensions.</Description>
		<ExtensionNode name="Class">
			<Description>The specified class must subclass CommitDialogExtension.</Description>
		</ExtensionNode>
	</ExtensionPoint>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/StatusViewCommands" name = "Status View Commands">
		<Description>Commands to be shown in the context menu of the status view. The id must match an existing code. The provided type must be a subclass of VersionControlCommandHandler.</Description>
		<ExtensionNode name="CommandItem" />
		<ExtensionNode name="SeparatorItem" type="MonoDevelop.Components.Commands.ExtensionNodes.SeparatorItemCodon" />
	</ExtensionPoint>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/BlameView/ContextMenu" name = "Author view context menu">
		<Description>Context menu for the Authors view.</Description>
		<ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet" />
	</ExtensionPoint>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/DiffViewHandler" name = "Diff view handler">
		<Description>Handler used to create the a diff view which can display the current file.</Description>
		<ExtensionNode name="Handler" objectType="MonoDevelop.VersionControl.IVersionControlViewHandler" />
	</ExtensionPoint>

	<Extension path = "/MonoDevelop/VersionControl/DiffViewHandler">
		<Handler class = "MonoDevelop.VersionControl.DefaultDiffViewHandler" />
	</Extension>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/BlameViewHandler" name = "Author view handler">
		<Description>Handler used to create an authors view which can display the current file.</Description>
		<ExtensionNode name="Handler" objectType="MonoDevelop.VersionControl.IVersionControlViewHandler" />
	</ExtensionPoint>

	<Extension path = "/MonoDevelop/VersionControl/BlameViewHandler">
		<Handler class = "MonoDevelop.VersionControl.DefaultBlameViewHandler" />
	</Extension>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/LogViewHandler" name = "Log view handler">
		<Description>Handler used to create the a log view which can display the current file.</Description>
		<ExtensionNode name="Handler" objectType="MonoDevelop.VersionControl.IVersionControlViewHandler" />
	</ExtensionPoint>

	<Extension path = "/MonoDevelop/VersionControl/LogViewHandler">
		<Handler class = "MonoDevelop.VersionControl.DefaultLogViewHandler" />
	</Extension>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/MergeViewHandler" name = "Merge view handler">
		<Description>Handler used to create the a merge view which can display the current file.</Description>
		<ExtensionNode name="Handler" objectType="MonoDevelop.VersionControl.IVersionControlViewHandler" />
	</ExtensionPoint>

	<Extension path = "/MonoDevelop/VersionControl/MergeViewHandler">
		<Handler class = "MonoDevelop.VersionControl.DefaultMergeViewHandler" />
	</Extension>

	<ExtensionPoint path = "/MonoDevelop/VersionControl/DiffView/ContextMenu" name = "Diff view context menu">
		<Description>Context menu for the diff view.</Description>
		<ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet" />
	</ExtensionPoint>

	<Extension path = "/MonoDevelop/Core/FileSystemExtensions">
		<Class class = "MonoDevelop.VersionControl.VersionControlFileSystemExtension" insertafter = "MidStep" />
	</Extension>

	<Extension path = "/MonoDevelop/Ide/Pads/ProjectPad">
		<PadOption id = "ShowVersionControlOverlays" _label = "Show Version Control Overlay Icons" defaultValue = "True" />
		<NodeBuilder id = "VersionControlNodeExtension" class = "MonoDevelop.VersionControl.VersionControlNodeExtension"/>
	</Extension>

	<Extension path = "/MonoDevelop/Core/StockIcons">
		<StockIcon stockid = "vc-add-command" resource = "vcs-added-16.png" size="Menu" />
		<StockIcon stockid = "vc-remove-command" resource = "vcs-removed-16.png" size="Menu" />
		<StockIcon stockid = "vc-rename-command" resource = "vcs-renamed-16.png" size="Menu" />
		<StockIcon stockid = "vc-resolve-command" resource = "vcs-conflicted-16.png" size="Menu" />
		<StockIcon stockid = "vc-revert-command" resource = "revert-16.png" size="Menu" />
		<StockIcon stockid = "vc-diff" resource = "diff-16.png" size="Menu" />
		<StockIcon stockid = "vc-log" resource = "log-16.png" size="Menu" />
		<StockIcon stockid = "vc-status" resource = "local-status-16.png" size="Menu" />
		<StockIcon stockid = "vc-update" resource = "pull-16.png" size="Menu" />
		<StockIcon stockid = "vc-push" resource = "push-16.png" size="Menu" />
		<StockIcon stockid = "vc-commit" resource = "commit-16.png" size="Menu" />
		<StockIcon stockid = "vc-remote-status" resource = "remote-status-16.png" size="Menu" />
		<StockIcon stockid = "vc-comment" resource = "comment-16.png" size="Menu" />
		<StockIcon stockid = "vc-status-refresh" resource = "refresh-16.png" size="Menu" />
		<StockIcon stockid = "md-version-control" resource = "version-control-16.png" size="Menu" />
		<StockIcon stockid = "vc-file-added" resource = "vcs-added-16.png" size="Menu" />
		<StockIcon stockid = "vc-file-removed" resource = "vcs-removed-16.png" size="Menu" />
		<StockIcon stockid = "vc-file-renamed" resource = "vcs-renamed-16.png" size="Menu" />
		<StockIcon stockid = "vc-file-modified" resource = "vcs-modified-16.png" size="Menu" />
		<StockIcon stockid = "vc-file-conflicted" resource = "vcs-conflicted-16.png" size="Menu" />
		<StockIcon stockid = "vc-repository" resource = "repository-16.png" size="Menu" />
		<StockIcon stockid = "vc-tag" resource = "tag-16.png" size="Menu" />
		<StockIcon stockid = "vc-branch" resource = "branch-16.png" size="Menu" />
		<StockIcon stockid = "md-prefs-git" resource="prefs-git-16.png" size="Menu" />
		<StockIcon stockid = "md-prefs-commit-message-style" resource="prefs-commit-message-style-16.png" size="Menu" />
		<StockIcon stockid = "md-prefs-version-control" resource="prefs-version-control-16.png" size="Menu" />
	</Extension>

	<Extension path = "/MonoDevelop/Ide/Commands">
		<Category _name = "Version Control" id = "VersionControl">
		<Command id = "MonoDevelop.VersionControl.Commands.Add"
			_label = "_Add"
			icon = "vc-add-command"
			defaultHandler = "MonoDevelop.VersionControl.AddCommandHandler"
			description = "Add node to repository in the next commit."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Remove"
			_label = "_Remove"
			icon = "vc-remove-command"
			defaultHandler = "MonoDevelop.VersionControl.RemoveCommandHandler"
			description = "Remove node to repository in the next commit."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Diff"
			_label = "_Diff"
			icon = "vc-diff"
			defaultHandler = "MonoDevelop.VersionControl.CurrentFileDiffHandler"
			description = "Show the changes made to the local copy since the last update."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Revert"
			_label = "_Revert"
			icon = "vc-revert-command"
			defaultHandler = "MonoDevelop.VersionControl.RevertCommandHandler"
			description = "Restore pristine working copy file (undo most local edits)."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Log"
			_label = "_Log"
			icon = "vc-log"
			defaultHandler = "MonoDevelop.VersionControl.CurrentFileLogHandler"
			description = "Shows the commit history of the file or folder."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Status"
			_label = "_Review and Commit"
			icon = "vc-status"
			description = "Shows the status of files in the folder."/>
		<Command id = "MonoDevelop.VersionControl.Commands.SolutionStatus"
			_label = "_Review Solution and Commit"
			icon = "vc-status"
			defaultHandler="MonoDevelop.VersionControl.StatusCommandHandler"
			description = "Shows the status of files in the solution."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Update"
			_label = "_Update"
			icon = "gtk-refresh"
			description = "Updates the local copy with remote changes."/>
		<Command id = "MonoDevelop.VersionControl.Commands.UpdateSolution"
			_label = "_Update Solution"
			icon = "gtk-refresh"
			defaultHandler="MonoDevelop.VersionControl.UpdateCommandHandler"
			description = "Updates the local copy with remote changes."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Publish"
			defaultHandler = "MonoDevelop.VersionControl.PublishCommand"
			_label = "_Publish in Version Control..."
			icon = "vc-push"
			description = "Publish actual project into repository."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Checkout"
			defaultHandler = "MonoDevelop.VersionControl.CheckoutCommand"
			_label = "C_heckout..."
			icon = "vc-update"
			description = "Checkout a project from repository."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Lock"
			_label = "Lock"
			defaultHandler = "MonoDevelop.VersionControl.LockCommandHandler"
			description = "Lock files in the repository, so that no other user can change them."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Unlock"
			_label = "Release Lock"
			defaultHandler = "MonoDevelop.VersionControl.UnlockCommandHandler"
			description = "Unlock files in the repository, so that other user can change them."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Annotate"
			_label = "Authors"
			defaultHandler = "MonoDevelop.VersionControl.CurrentFileBlameHandler"
			description = "Show the origin of each line in a file."/>
		<Command id = "MonoDevelop.VersionControl.Commands.CreatePatch"
			_label = "Create _Patch"
			icon = "vc-diff"
			description = "Create a patch representing local changes."/>
		<Command id = "MonoDevelop.VersionControl.Commands.Ignore"
			_label = "Add to Ignore List"
			description = "Add items to version control ignore list"/>
		<Command id = "MonoDevelop.VersionControl.Commands.Unignore"
			_label = "Remove from Ignore List"
			description = "Removes items to version control ignore list"/>
		<Command id = "MonoDevelop.VersionControl.Commands.ResolveConflicts"
			_label = "Resolve Conflicts"
			description = "Resolve conflicts on the project file."/>
		</Category>

		<Category id="Hidden" _name="Hidden">
		<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.CopyRevision"
			_label = "_Copy Revision"/>
		<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.ShowDiff"
			_label = "_Show Diff"/>
		<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.ShowLog"
			_label = "S_how Log"/>
		<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.ShowBlameBefore"
			_label = "Show _Authors prior to this change"/>			
		<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.ShowPreviousBlame"
			_label = "Back to _Previous view"/>
		</Category>
	</Extension>

	<Extension path = "/MonoDevelop/Ide/ContextMenu/DocumentTab">
		<ItemSet id = "VersionControl" _label = "_Version Control" insertafter = "SaveSeparator">
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Diff"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Log"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Annotate"/>
			<SeparatorItem/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Revert"/>
		</ItemSet>
		<SeparatorItem/>
	</Extension>

	<Extension path = "/MonoDevelop/Ide/MainMenu">
		<ItemSet id = "VersionControl" _label = "Versio_n Control" insertafter = "Run" >
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Checkout" />
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Publish"/>
			<SeparatorItem/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.UpdateSolution"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.SolutionStatus"/>
			<SeparatorItem/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Add"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Remove"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Revert"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Lock"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Unlock"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Ignore"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Unignore"/>
			<SeparatorItem/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Diff"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Log"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Annotate"/>
		</ItemSet>
	</Extension>

	<Extension path = "/MonoDevelop/SourceEditor2/ContextMenu/Editor">
		<ItemSet id = "VersionControl" _label = "_Version Control">
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Diff"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Log"/>
			<CommandItem id = "MonoDevelop.VersionControl.Commands.Annotate"/>
		</ItemSet>
	</Extension>

	<Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad">
		<Condition id="ItemType" value="IFileItem|IFolderItem">
			<ItemSet id = "VersionControl" _label = "_Version Control" insertafter = "Tools">
				<CommandItem id = "MonoDevelop.VersionControl.Commands.ResolveConflicts"/>
				<Condition id="ItemType" value="Project|WorkspaceItem">
					<CommandItem id = "MonoDevelop.VersionControl.Commands.Publish"/>
				</Condition>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Add"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Remove"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Revert"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Ignore"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Unignore"/>
				<Condition id="ItemType" value="IFileItem">
					<CommandItem id = "MonoDevelop.VersionControl.Commands.Lock"/>
					<CommandItem id = "MonoDevelop.VersionControl.Commands.Unlock"/>
				</Condition>
				<SeparatorItem id = "CommandSeparator" />
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Update"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Status"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Diff"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.CreatePatch"/>
				<CommandItem id = "MonoDevelop.VersionControl.Commands.Log"/>
				<Condition id="ItemType" value="IFileItem">
					<CommandItem id = "MonoDevelop.VersionControl.Commands.Annotate"/>
				</Condition>
			</ItemSet>
			<SeparatorItem />
		</Condition>
	</Extension>
	<Extension path = "/MonoDevelop/VersionControl/StatusViewCommands">
		<CommandItem id = "MonoDevelop.Ide.Commands.ViewCommands.Open" type="MonoDevelop.VersionControl.OpenCommandHandler"/>
		<SeparatorItem id = "CommandSeparator0" />
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Update" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Diff" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.CreatePatch" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Log" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<SeparatorItem id = "CommandSeparator1" />
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Remove" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Revert" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<SeparatorItem id = "CommandSeparator2" />
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Lock" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.Unlock" type="MonoDevelop.VersionControl.AddinCommandHandler"/>
		<SeparatorItem id = "CommandSeparator3" />
	</Extension>
	<!--
	<Extension path="/MonoDevelop/SourceEditor2/ContextMenu/Editor">

		<CommandItem id = "MonoDevelop.VersionControl.Commands.ShowAnnotations"/>
		<CommandItem id = "MonoDevelop.VersionControl.Commands.HideAnnotations"/>
	</Extension>	-->

	<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels">
		<Section id="VersionControl" _label="Version Control" icon="md-prefs-version-control">
			<Condition id="ItemType" value="Solution">
				<Section id="VersionControlGeneral" _label="General" fill="true" class="MonoDevelop.VersionControl.VersionControlSolutionOptionsPanel" icon="md-prefs-version-control" />
			</Condition>
			<ComplexCondition>
				<Or>
					<Condition id="ItemType" value="SolutionFolderItem" />
					<Condition id="ItemType" value="Solution" />
				</Or>
				<Section id="VersionControlGeneral" _label="Commit Message Style" fill="true" class="MonoDevelop.VersionControl.VersionControlPolicyPanel" icon="md-prefs-commit-message-style" />
			</ComplexCondition>
		</Section>
	</Extension>

	<Extension path = "/MonoDevelop/ProjectModel/Gui/DefaultPolicyPanels/VersionControl">
		<Section id="VersionControlGeneral" _label = "Commit Message Style" fill="true" class="MonoDevelop.VersionControl.VersionControlPolicyPanel" icon="md-prefs-commit-message-style" />
	</Extension>

	<Extension path = "/MonoDevelop/Ide/GlobalOptionsDialog/VersionControl">
		<Section id = "VersionControlGeneral" _label = "General" fill="true" class="MonoDevelop.VersionControl.VersionControlGeneralOptionsPanel"  icon="md-prefs-version-control" />
		<Section id = "VersionControlGeneral" _label = "Commit Message Style" fill="true" class="MonoDevelop.VersionControl.VersionControlPolicyPanel" icon="md-prefs-commit-message-style" />
	</Extension>

	<Extension path = "/MonoDevelop/ProjectModel/PolicySets/Mono" >
		<Policies resource="Policies.xml"/>
	</Extension>

	<Extension path = "/MonoDevelop/TypeSystem/Parser">
		<Parser class = "MonoDevelop.VersionControl.Views.DiffParser" id = "DiffParser" mimeType="text/x-patch" />
	</Extension>

	<Extension path = "/MonoDevelop/Ide/StartupHandlers">
		<Class class = "MonoDevelop.VersionControl.VersionControlInitializer"/>
	</Extension>

	<Extension path = "/MonoDevelop/VersionControl/BlameView/ContextMenu">
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" />
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" />
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" />
	</Extension>

	<Extension path = "/MonoDevelop/VersionControl/DiffView/ContextMenu">
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Cut" />
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" />
		<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Paste" />
	</Extension>

	<Extension path = "/MonoDevelop/Core/UserDataMigration">
		<!-- 2.4 -->
		<Migration sourceVersion="2.4" kind="Cache" path="version-control-commit-msg" />
		<Migration sourceVersion="2.4" kind="Config" path="VersionControl.config" />
		<!-- 2.6+ -->
		<Migration sourceVersion="2.6+" kind="Cache" path="version-control-commit-msg" />
		<Migration sourceVersion="2.6+" kind="Config" path="VersionControl.config" />
	</Extension>
</ExtensionModel>
